/*
 * 作者：姚俊
 * 功能：论文报表
 * 日期：2015-05-24
 */
package leader.service;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.apache.struts2.ServletActionContext;

import teacher.bean.Paper;
import teacher.bean.Teacher;
import leader.service.DirectPaperService;
import tools.StringDate;

public class PullPaperToExcel {
	
	/**
	 * @category 生成论文的报表
	 * @author yaojun
	 * @param flag int 值为0查询全部、1按照起止日期查询、2按照获奖名称模糊查询
	 * @param paper1 Paper 传入一个论文的对象，当查询全部的时候该对象为空，当按照起止日期查询的时候，该对象必须有日期
	 * 当进行名称模糊查询的时候该对象中必须有名称
	 * @param paper2   当根据日期查询的时候，该对象传入一个截止日期
	 */
	public static void paperExcel(int flag,Paper paper1,Paper paper2,Teacher t)
	{
		
        //论文列表
        List<Paper> papers=null;
        try {
            WritableWorkbook wwb = null; 
            String uploadPath = ServletActionContext.getServletContext()
					.getRealPath("/upload");
            
            File dir=new File(uploadPath);  

	        //如果这个目录不存在,则创建它  
	        if (!dir.exists()) {  
	            dir.mkdir();  
	        } 
               // 创建可写入的Excel工作簿
              String fileName = uploadPath+"/"+"paper.xls";
//            String fileName="D://papers.xls";
               File file=new File(fileName);
               if (!file.exists()) {
                   file.createNewFile();
               }
               //以fileName为文件名来创建一个Workbook
               wwb = Workbook.createWorkbook(file);
               // 创建工作表
               WritableSheet ws = wwb.createSheet("Test Shee 1", 0);   
               

               
               if(flag==0)
               {
            	   papers=new DirectPaperService().selectAllDirectPaper(t);
               }
               else if(flag==1)
               {
            	  papers=new DirectPaperService().selectDirectPaperByTime(paper1.getDate(), paper2.getDate(), t);
               }
               else
               {
            	   papers=new DirectPaperService().selectPaperLikeName(paper1.getName(), t);
               }
               
               
               
               //要插入到的Excel表格的行号，默认从0开始
               Label pid= new Label(0, 0, "编号");//表示第
               Label pname= new Label(1, 0, "论文名称");//表示第
               Label pfauthorr= new Label(2, 0, "第一作者");
               Label ppbulication= new Label(3, 0, "发表刊物名称");   
               Label ppubNumbet= new Label(4, 0, "刊号");
               Label pinclude= new Label(5, 0, "收录类型");
               Label pquoteNum= new Label(6, 0, "他引次数");
               Label pdate= new Label(7, 0, "发表日期");
               
               
               ws.addCell(pid);
               ws.addCell(pname);
               ws.addCell(pfauthorr);
               ws.addCell(ppbulication);
               ws.addCell(ppubNumbet);
               ws.addCell(pinclude);
               ws.addCell(pquoteNum);
               ws.addCell(pdate);
               

               for (int i = 0; i < papers.size(); i++) {  
            	   Label ppid= new Label(0, i+1, i+1+"");
                   Label ppname= new Label(1, i+1, papers.get(i).getName()+"");
                   Label ppfauthorr= new Label(2, i+1, papers.get(i).getFauthor());
                   Label pppbulication= new Label(3, i+1, papers.get(i).getPbulication()+"");  
                   Label pppubNumbet= new Label(4, i+1, papers.get(i).getPubNumber()+"");  
                   Label ppinclude= new Label(5, i+1, papers.get(i).getInclude()+"");  
                   Label ppquoteNum= new Label(6, i+1, papers.get(i).getQuoteNum()+"");  
                   Label ppdate= new Label(7, i+1,
                		   StringDate.DateToString(
                				   new SimpleDateFormat("yyyy-MM-dd").parse(
                						   StringDate.DateToString(
                								   papers.get(i).getDate()))));  
                   Label ppstate= new Label(8, i+1, papers.get(i).getState()+"");
                   ws.addCell(ppid);
                   ws.addCell(ppname);
                   ws.addCell(ppfauthorr);
                   ws.addCell(pppbulication);          
                   ws.addCell(pppubNumbet);
                   ws.addCell(ppinclude);
                   ws.addCell(ppquoteNum);
                   ws.addCell(ppdate);
               }  
              //写进文档
               wwb.write();
              // 关闭Excel工作簿对象
               wwb.close();     
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
}
